package com.fejal.dao;

import java.util.List;

import com.fejal.bean.Titulo;

public class TituloDAOHibernate implements TituloDAO {

	HibernateDAOFactory hibernateDAOFactory = null;
	HibernateDAO<Titulo> hibernateDAO = null;

	public TituloDAOHibernate() {
		hibernateDAOFactory = new HibernateDAOFactory();
		hibernateDAO = hibernateDAOFactory.getTituloDao();
	}

	@Override
	public Titulo inserir(Titulo titulo) throws Exception {

		Titulo t;
		try {
			t = (Titulo) hibernateDAO.add(titulo);

		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 

		return t;
	}

	@Override
	public boolean alterar(Titulo titulo) throws Exception{

		boolean ok = false;
	
		
		try {
			hibernateDAO.update(titulo);
			ok = true;

		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 

		return ok;
	}

	@SuppressWarnings("unchecked")
	@Override
	public boolean isExiste(Titulo titulo) {
		// SQL para verificar se a Unidade existe
		String 	sql = 	"FROM Titulo " +
						"WHERE codigoTitulo <> 0 ";

		if (titulo.getCodigoTitulo() != 0) {
			sql += " AND codigoTitulo = "+titulo.getCodigoTitulo();  
		}else{
			if (titulo.getAluno().getCodigoAluno() != 0) {
				sql += " AND codigoAluno = "+titulo.getAluno().getCodigoAluno();  
			}

			if (titulo.getAno() != 0) {
				sql += " AND ano = "+titulo.getAno();  
			}

			if (titulo.getSemestre() != 0) {
				sql += " AND semestre = "+titulo.getSemestre();  
			}

			if (titulo.getServico().getCodigoServico() != 0) {
				sql += " AND codigoServico = "+titulo.getServico().getCodigoServico();  
			}

			if (titulo.getParcela() != 0) {
				sql += " AND parcela = "+titulo.getParcela();  
			}
		}

		List<Titulo> lista = hibernateDAO.getSession().createQuery(sql).list();
		if(lista.size()<1){
			return false;
		} else {
			return true;
		}
	}
}
